import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
import { resolve } from 'path'

export default defineConfig({
  base: '/', // 配置路径
  resolve: {
    // 配置别名
    alias: {
      '@': resolve(__dirname, 'src')
    }
  },
  css: {
		preprocessorOptions: {
			scss: { // 引入全局变量
				additionalData: `@use 'src/styles/variable.scss' as *;`
			}
		}
	},
  server: {
    host: '0.0.0.0', // 默认是 localhost
    port: 8000, // 默认是 3000 端口
    strictPort: true, // 设为 true 时若端口已被占用则会直接退出，而不是尝试下一个可用端口
    https: false, // 是否开启 https
    open: true, // 浏览器自动打开，设为字符串时，会被用作 URL 的路径名
    proxy: {}, // 本地开发环境通过代理实现跨域，生产环境使用 nginx 转发
    cors: true // 为开发服务器配置 CORS，默认启用并允许任何源
  },
  build: {
    outDir: 'dist', // 打包构建输出路径，默认 dist，如果路径存在，构建之前会被删除
    cssCodeSplit: true, // 启用代码拆分，如果禁用，整个项目中的所有 CSS 将被提取到一个 CSS 文件中
    sourcemap: false, // 构建后是否生成 source map 文件，禁用加快构建速度
    brotliSize: false, // brotli 压缩大小报告。压缩大型输出文件可能会很慢，因此禁用该功能可能会提高大型项目的构建性能
    minify: 'terser', // 混淆器，terser 构建后文件体积更小
    terserOptions: {
      // 生产环境移除
      compress: {
        drop_console: true,
        drop_debugger: true
      }
    }
  },
  plugins: [
    vue(), // 挂载 vue
    AutoImport({
      // 自动导入组件
      resolvers: [ElementPlusResolver()]
    }),

    Components({
      // 自动注册组件
      resolvers: [ElementPlusResolver()]
    })
  ]
})
